﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using SAAC.DTO;
using SAAC.BLL;


namespace SAAC.Funcionario
{
    public partial class MeusRequerimentosFuncionario : System.Web.UI.Page
    {
        const string MATRICULA_SESSION = "MATRICULA_SESSION";

        protected void Page_Load(object sender, EventArgs e)
        {
            gerenciaVisibilidadeComponentesMaster();
            if (!IsPostBack)
            {

                carregarGridMeusRequerimentos();
            }

        }
        private void gerenciaVisibilidadeComponentesMaster()
           {
            Menu menuAluno = (Menu)Master.FindControl("MenuAluno");
            menuAluno.Visible = false;
            Menu menuFuncionario = (Menu)Master.FindControl("MenuFuncionario");
            menuFuncionario.Visible = true;
            Menu menuProfessor = (Menu)Master.FindControl("MenuProfessor");
            menuProfessor.Visible = false;
            Menu menuColegiado = (Menu)Master.FindControl("MenuColegiado");
            menuColegiado.Visible = false; 

            LinkButton link = (LinkButton)Master.FindControl("lkbCadastro");
            link.Visible = false;
        }

        #region gvwMeusRequerimentos

        private void carregarGridMeusRequerimentos()
        {
            var dtoRequerimento = new RequerimentoDTO();
            var bllRequerimento = new RequerimentoBLL();

            dtoRequerimento.FuncionarioAvaliador = new FuncionarioDTO();
            dtoRequerimento.FuncionarioAvaliador.Matricula = (int)Session[MATRICULA_SESSION];

            var listaRequerimentos = new List<RequerimentoDTO>();

            listaRequerimentos = bllRequerimento.SelectAll(dtoRequerimento, null, 1000);

            gvwMeusRequerimentos.DataSource = listaRequerimentos;
            gvwMeusRequerimentos.DataBind();
        }

        protected void gvwMeusRequerimentos_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (gvwMeusRequerimentos.SelectedRow.Cells[4].Text.Equals("EmAnalise"))
            {
                pnlRequerimento.Visible = true;
                int index = gvwMeusRequerimentos.SelectedIndex;
                txtId.Text = gvwMeusRequerimentos.DataKeys[index].Value.ToString();

                txtMatriculaAluno.Text = gvwMeusRequerimentos.SelectedRow.Cells[1].Text;
                txtDataAbertura.Text = gvwMeusRequerimentos.SelectedRow.Cells[2].Text;
                if (gvwMeusRequerimentos.SelectedRow.Cells[4].Text == "&nbsp;")
                    txtFechamento.Text = string.Empty;
                else
                    txtFechamento.Text = gvwMeusRequerimentos.SelectedRow.Cells[3].Text;
                txtStatus.Text = gvwMeusRequerimentos.SelectedRow.Cells[4].Text;
                txtComentarios.Text = gvwMeusRequerimentos.SelectedRow.Cells[5].Text;

                lblMensagem.Text = string.Empty;
            }
            else 
            {
                lblMensagem.Text = "Requerimento já foi finalizado.";
            }
        }

     

        #endregion

     
        protected void btnReprovarRequerimento_Click(object sender, EventArgs e)
        {
            try
            {
                var dtoRequerimento = new RequerimentoDTO();
                var bllRequerimento = new RequerimentoBLL();

                dtoRequerimento.Id = Convert.ToInt32(txtId.Text);
                dtoRequerimento.Abertura = Convert.ToDateTime(txtDataAbertura.Text);
                dtoRequerimento.Fechamento = DateTime.Today;
                dtoRequerimento.Status = EStatusRequerimento.Invalido;
                dtoRequerimento.Comentarios = txtComentarios.Text;

                dtoRequerimento.FuncionarioAvaliador = new FuncionarioDTO();
                dtoRequerimento.FuncionarioAvaliador.Matricula = (int)Session[MATRICULA_SESSION];

                dtoRequerimento.AlunoRequerinte = new AlunoDTO();
                dtoRequerimento.AlunoRequerinte.Matricula = Convert.ToInt32(txtMatriculaAluno.Text);

                bllRequerimento.Update(dtoRequerimento);

                carregarGridMeusRequerimentos();

                lblMensagem.Text = "Requerimento foi reprovado!";
            }
             catch (Exception ex)
            {
                throw ex;
            }
        }

        protected void btnFinalizarRequerimento_Click(object sender, EventArgs e)
        {
            
            carregarDropDownColegiado();
            btnFinalizarRequerimento.Enabled = false;
            btnEncaminharProcesso.Visible = true;
            pnlProcesso.Visible = true;
        }

        private void carregarDropDownColegiado()
        {
            var dtoColegiado = new ColegiadoDTO();
            var bllColegiado = new ColegiadoBLL();
            var listaColegiado = new List<ColegiadoDTO>();
            listaColegiado = bllColegiado.SelectAll(dtoColegiado);
            ddlColegiado.DataValueField = "Id";
            ddlColegiado.DataTextField = "Nome";
            ddlColegiado.DataSource = listaColegiado;
            ddlColegiado.DataBind();

        }

        protected void btnEncaminharProcesso_Click(object sender, EventArgs e)
        {
            try
            {
                var dtoRequerimento = new RequerimentoDTO();
                var bllRequerimento = new RequerimentoBLL();

                dtoRequerimento.Id = Convert.ToInt32(txtId.Text);
                dtoRequerimento.Abertura = Convert.ToDateTime(txtDataAbertura.Text);
                dtoRequerimento.Fechamento = DateTime.Today;
                dtoRequerimento.Status = EStatusRequerimento.Valido;
                dtoRequerimento.Comentarios = txtComentarios.Text;

                dtoRequerimento.FuncionarioAvaliador = new FuncionarioDTO();
                dtoRequerimento.FuncionarioAvaliador.Matricula = (int)Session[MATRICULA_SESSION];

                dtoRequerimento.AlunoRequerinte = new AlunoDTO();
                dtoRequerimento.AlunoRequerinte.Matricula = Convert.ToInt32(txtMatriculaAluno.Text);

                bllRequerimento.Update(dtoRequerimento);
                carregarGridMeusRequerimentos();

                encaminharProcesso();

                lblMensagem.Text = "Processo foi iniciado, verifique sua lista em Meus Processos";
            }
            catch (Exception ex)
            {
                throw ex;
            }
            

        }
        private void encaminharProcesso()
        {
            try
            {

                var dtoProcesso = new ProcessoDTO();
                var bllProcesso = new ProcessoBLL();

                dtoProcesso.Numero = txtNumeroProcesso.Text;
                dtoProcesso.Abertura = DateTime.Today;
                dtoProcesso.Status = EStatusProcesso.NaoIniciado;
                dtoProcesso.Colegiado = new ColegiadoDTO();
                dtoProcesso.Colegiado.Id = Convert.ToInt32(ddlColegiado.SelectedItem.Value);
                dtoProcesso.FuncionarioCriador = new FuncionarioDTO();
                dtoProcesso.FuncionarioCriador.Matricula = (int)Session[MATRICULA_SESSION];

                bllProcesso.Insert(dtoProcesso);

                lblMensagem.Text = "Processo encaminhado para o Colegiado com sucesso!";

            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

    
    }
}